﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// Clase entidad para encapsular/desencapsular datos de los requerimientos funcionales, ademas de alguna informacion sobre algun cambio realizado.
public class RequerimientoFuncional
{
    
	/// El identificador local del Requerimiento Funcional
    private int id;

    /// La propiedad para acceso publico al identificador local del Requerimiento Funcional
    public int Id
    {
        get { return id; }
        set { id = value; }
    }
	
    /// El nombre del Requerimiento Funcional
    private string nombreRequerimiento;

    /// La propiedad para acceso publico al nombre del requerimiento
    public string NombreRequerimiento
    {
        get { return nombreRequerimiento; }
        set { nombreRequerimiento = value; }
    }
    
    /// La iteracion del Requerimiento Funcional
    private int iteracion;
    
	/// La propiedad para acceso publico a la contraseña del Requerimiento Funcional
    public int Iteracion
    {
        get { return iteracion; }
        set { iteracion = value; }
    }

    /// La descripcion del requerimiento funcional
    private string descripcion;

    /// La propiedad para acceso publico a la descripcion del requerimiento funcional
    public string Descripcion
    {
        get { return descripcion; }
        set { descripcion = value; }
    }
    
    /// La justificacion del requerimiento funcional
    private string justificacion;

    /// La propiedad para acceso publico a la justificacion del requerimiento funcional
    public string Justificacion
    {
        get { return justificacion; }
        set { justificacion = value; }
    }
    
    /// El id del Recurso Humano que asigno el requerimiento funcional
    private int fuente;
    
    /// La propiedad para acceso publico al id del Recurso Humano que asigno el requerimiento funcional
    public int Fuente
    {
        get { return fuente; }
        set { fuente = value; }
    }

    /// El id del Recurso Humano que asigno el requerimiento funcional
    private int prioridad;

    /// La propiedad para acceso publico al id del Recurso Humano que asigno el requerimiento funcional
    public int Prioridad
    {
        get { return prioridad; }
        set { prioridad = value; }
    }

    /// La fecha en que se establecio el requerimiento funcional
    private DateTime fechaInicio;
    
    /// La propiedad para acceso publico a la fecha en que se establecio el requerimiento funcional
    public DateTime FechaInicio
    {
        get { return fechaInicio; }
        set { fechaInicio = value; }
    }

    /// La fecha en que se concluyo el requerimiento funcional
    private DateTime fechaFinal;
    
    /// La propiedad para acceso publico a la fecha en que se concluyo el requerimiento funcional
    public DateTime FechaFinal
    {
        get { return fechaFinal; }
        set { fechaFinal = value; }
    }

    /// El esfuerzo que se estima sera aplicado al requerimiento funcional
    private String esfuerzo;
    
	/// La propiedad para acceso publico al esfuerzo que se estima sera aplicado al requerimiento funcional
    public String Esfuerzo
    {
        get { return esfuerzo; }
        set { esfuerzo = value; }
    }


    /// El estado actual del requerimiento funcional
    private int estado;

    /// La propiedad para acceso publico al estado actual del requerimiento funcional
    public int Estado
    {
        get { return estado; }
        set { estado = value; }
    }
    

    /// El criterio que sera aplicado a un requerimiento funcional a ver si este sera aceptado o no
    private string criterioAceptacion;

    /// La propiedad para acceso publico al criterio que sera aplicado a un requerimiento funcional a ver si este sera aceptado o no
    public string CriterioAceptacion
    {
        get { return criterioAceptacion; }
        set { criterioAceptacion = value; }
    }

    /// La fecha en que se realizo un determinado cambio a algun requerimiento funcional
    private DateTime fechaCambio;
    
    /// La propiedad para acceso publico a la fecha en que se realizo un determinado cambio a algun requerimiento funcional
    public DateTime FechaCambio
    {
        get { return fechaCambio; }
        set { fechaCambio = value; }
    }

    /// El id del Recurso Humano que realizo un determinado cambio a algun requerimiento funcional
    private int fuenteCambio;
    
    /// La propiedad para acceso publico al id del Recurso Humano que realizo un determinado cambio a algun requerimiento funcional
    public int FuenteCambio
    {
        get { return fuenteCambio; }
        set { fuenteCambio = value; }
    }

    /// La descripcion de algun cambio a un requerimiento funcional
    private string descripcionCambio;

    /// La propiedad para acceso publico a la descripcion de algun cambio a un requerimiento funcional
    public string DescripcionCambio
    {
        get { return descripcionCambio; }
        set { descripcionCambio = value; }
    }

    private int dependeDeR;
    public int DependeDeR
    {
        get { return dependeDeR; }
        set { dependeDeR = value; }
    }

    private int dependeDeM;
    public int DependeDeM
    {
        get { return dependeDeM; }
        set { dependeDeM = value; }
    }

    /// <summary>
    /// Constructor sin parametros para un objeto requerimiento funcional
    /// </summary>
    public RequerimientoFuncional()
    {
    }

    /// Constructor con parametros para el objeto requerimiento funcional
    public RequerimientoFuncional(int id, String nombRequerimiento, int iter, String descri, String justif, int fuent, DateTime fechaIni, DateTime fechaFin, String esfuerzo, int est, int prior, String criterioAcept, DateTime fechaCamb, int fuenteCamb, String descripcionCamb, int depenR, int depenM)
    {
        crearRequerimientoFuncional(id, nombRequerimiento, iter, descri, justif, fuent, fechaIni, fechaFin, esfuerzo, est, prior, criterioAcept, fechaCamb, fuenteCamb, descripcionCamb, depenR, depenM);
    }
    
    /// Metodo para inicializar los datos de un  requerimiento funcional
    public void crearRequerimientoFuncional(int id, String nombRequerimiento, int iter, String descrip, String justif, int fuent, DateTime fechaIni, DateTime fechaFin, String esfuerzo, int est, int prior, String criterioAcept, DateTime fechaCamb, int fuenteCamb, String descripcionCamb, int depeR, int depeM)
    {
        Id = id;
        NombreRequerimiento = nombRequerimiento;
        Iteracion = iter;
        Descripcion = descrip;
        Justificacion = justif;
        Fuente = fuent;
        Prioridad = prior;
        FechaInicio = fechaIni;
        FechaFinal = fechaFin;
        Esfuerzo = esfuerzo;
        Estado = est;
        CriterioAceptacion = criterioAcept;
        DescripcionCambio = descripcionCamb;
        FuenteCambio = fuenteCamb;
        FechaCambio = fechaCamb;
        DependeDeR = depeR;
        dependeDeM = depeM;
    }


    /// Constructor con parametros para el objeto requerimiento funcional
    public RequerimientoFuncional(String nombRequerimiento, int iter, String descrip, String justif, int fuent, DateTime fechaIni, DateTime fechaFin, String esfuerzo, int est, int prior, String criterioAcept, int depeR, int depeM)
    {
        NombreRequerimiento = nombRequerimiento;
        Iteracion = iter;
        Descripcion = descrip;
        Justificacion = justif;
        Fuente = fuent;
        Prioridad = prior;
        FechaInicio = fechaIni;
        FechaFinal = fechaFin;
        Esfuerzo = esfuerzo;
        Estado = est;
        CriterioAceptacion = criterioAcept;
        DependeDeR = depeR;
        dependeDeM = depeM;
    }

}